package com.example.forum.interceptor;
/* @Author      zouzh
 * @PackageName forum
 * @Package     com.example.forum.interceptor
 * @Date        2023/9/15 22:24
 */

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

// 表示一个配置类
@Configuration
public class AppInterceptorConfigurer implements WebMvcConfigurer {

    @Autowired
    private LoginInterceptor loginInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(loginInterceptor)       // 添加用户登录拦截器
                .addPathPatterns("/**")                 // 拦截所有请求
                .excludePathPatterns("/sign-in.html")   // 排除登录HTML
                .excludePathPatterns("/sign-up.html")   // 排除注册HTML
                .excludePathPatterns("/user/login")     // 排除登录 api 接口
                .excludePathPatterns("/user/register")  // 排除注册 api 接口
                .excludePathPatterns("/user/logout")    // 排除退出 api 接口
                .excludePathPatterns("/swagger*/**")    // 排除登录 swagger 下所有
                .excludePathPatterns("/v3*/**")         // 排除登录 v3 下所有，与 swagger 相关
                .excludePathPatterns("/dist/**")        // 排除所有静态文件
                .excludePathPatterns("/image/**")
                .excludePathPatterns("/**.ico")
                .excludePathPatterns("/js/**");
    }
}
